package com.zgy.move;

import org.apache.commons.io.FileUtils;

import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 按照文件最后修改时间进行文件夹移动并分类工具
 * 过滤关键字： dist
 * 源路径： 桌面
 * 目标路径： 发包文件夹
 *
 * @author zhangguangyong
 * @date 2020/6/10 9:45
 */
public class MoveFile {

    public static void main(String[] args) {

        // 获取桌面路径
        File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();
        String fromPath = desktopDir.getAbsolutePath();
        // 处理后的文件移动到的路径
        String toPath = "D:\\@备份文件\\文档\\项目资料\\glsh\\前端\\发包\\";
        // 读取文件
        File desktop = new File(fromPath);
        // 判断是否存在
        if (desktop.exists()) {
            int successCount = 0;
            int errorCount = 0;
            // 过滤目标文件
            System.out.println("获取文件列表...");
            File[] files = desktop.listFiles(((dir, name) -> name.contains("dist")));
            // 存在文件
            if (files != null) {
                // 日期格式化
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                for (File file : files) {
                    if (file.isFile()) {
                        // 获取日期文件夹名称
                        String dirName = sdf.format(new Date(file.lastModified()));
                        // 建立文件夹路径
                        File dirPath = new File(toPath + dirName);
                        if (!dirPath.exists()) {
                            dirPath.mkdirs();
                        }
                        try {
                            System.out.println("移动文件：" + file.getName());
                            // 移动文件
                            FileUtils.moveFile(file, new File(dirPath + "\\" + file.getName()));
                            successCount++;
                            System.out.println("移动文件：" + file.getName() + " 成功");
                        } catch (IOException e) {
                            errorCount++;
                            System.out.println("目标文件已存在或源文件被占用无法删除 文件路径：");
                            System.out.println(file.getPath());
                        }
                    }
                }
                System.out.println("处理完成 成功处理[" + successCount + "]个，失败[" + errorCount + "]个");
            } else {
                System.out.println("源文件夹无文件");
            }
        } else {
            System.out.println("源文件夹不存在");
        }
    }
}
